package avicit.bdp.dlm.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.common.service.dto.DataSourceDTO;
import avicit.bdp.dlm.dto.DlmDataSourceDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * bdp_dlm_datasource dao类
 *
 * @author mayanj
 * @date 2020/12/3 10:41
 */
public interface DlmDataSourceDao extends BaseDAO<DlmDataSourceDTO> {

    /**
     * 查询数据源
     *
     * @param dataSourceId 数据源ID
     * @param typeId 分类ID
     * @return 数据源
     */
    DlmDataSourceDTO selectDataSource(@Param("dataSourceId") String dataSourceId,
                                      @Param("typeId") String typeId);

    /**
     * 按类型统计数据湖存储接入总数
     *
     * @param typeIdList 类型ID集合
     * @return 数据数存储接入总数
     */
    int countLakeDataSourceByType(@Param("typeIdList") List<String> typeIdList);

    /**
     * 按数据类型结构统计数据湖存储接入总数
     *
     * @param type 数据类型结构
     * @return 数据数存储接入总数
     */
    int countLakeDataSourceByStructure(@Param("type") Integer type);

    /**
     * 查询数据源分类，已去重
     *
     * @return 数据源分类
     */
    List<String> selectLakeDataSourceTypeId();

    /**
     * 通过分类ID查询数据湖关联数据源
     * @param typeId 分类ID
     * @param type 数据源类型
     * @return 关联数据源
     */
    List<DataSourceDTO> getDataSourceListByTypeIdAndType(@Param("typeId") String typeId,
                                                         @Param("type") Integer type);

}
